1. Field of the Invention
The present invention relates to the design of computer systems. More specifically, the present invention relates to a technique that facilitates performing very large transactions within a transactional memory system.
2. Related Art
A key problem in implementing transactional memory is the problem of buffering either the new or the old values of memory locations which are written to during the transaction. During the execution of a transaction, it is unknown whether or not the transaction will commit or fail (for example, due to resource limitations or memory conflicts). As a result, existing transactional memory designs buffer store values (in a store buffer or a cache) without overwriting copies of the old values. Alternatively, they can buffer the old values and prevent other threads from seeing the new values. In both alternatives the new values are not visible to other threads until the transaction commits, at which point the new values are made visible, or until the transaction fails, at which point the old values are restored.
For example, the UTM protocol proposed by Ananian et al. buffers the old values in a data structure stored in memory (see C. S. Ananian, K. Asanovi´c, B. Kuszmaul, C. Leiserson, and S. Lie, Unbounded Transactional Memory, Proceedings of the 11th International Symposium on High-Performance Computer Architecture (HPCA '05), 2005). Similarly, the LogTM protocol proposed by Moore et al., buffers new values in a private cache, and when this cache overflows, buffers old values of the overflowed cache lines in a data structure stored in memory (see K. Moore, J. Bobba, M. Moravan, M. Hill & D. Wood, LogTM: Log-based Transactional Memory, 12th Annual International Symposium on High Performance Computer Architecture (HPCA-12), 2006). Moreover, the transactional memory protocol described in a pending U.S. patent application entitled “Facilitating Efficient Transactional Memory and Atomic Operations via Cache Line Marking,” by the same inventors as the instant application, having Ser. No. 11/655,569, and filing date 18 Jan. 2007 buffers new values (i.e., values stored during a transaction) in a store queue.
Unfortunately, data structures such as store queues or buffers are necessarily bounded in size. Hence, requiring that all of a transaction's store operations fit into such a data structure limits the size of transactions that can be executed.
Hence, what is needed is a processor that supports transactional execution without the above-described limitations.